Skip to content
Loafacto 문서/참고 문서/web-ui 문서/Supabase Storage: avatars 버킷 설정

Supabase Storage: avatars 버킷 설정

avatars 버킷에서 사용자별 업로드 파일만 허용하고, 공개 URL 조회를 허용하는 기본 설정 가이드입니다.

1. Storage 버킷 생성

  1. Supabase Dashboard → StorageNew bucket
  2. Name: avatars
  3. Public bucket: false 권장
  4. Create bucket

2. RLS 정책( SQL Editor )

avatars 업로드/수정/조회가 실패하는 경우 아래 정책을 Storage SQL Editor에서 실행하세요.

  • INSERT: 내 파일만 업로드 가능
  • UPDATE: 내 파일만 upsert: true 포함 수정 가능
  • SELECT: 공개 읽기 허용
sql
-- avatars 버킷 RLS 정책

CREATE POLICY "Users can upload own avatar"
ON storage.objects FOR INSERT TO authenticated
WITH CHECK (
  bucket_id = 'avatars'
  AND (storage.foldername(name))[1] = auth.uid()::text
);

CREATE POLICY "Users can update own avatar"
ON storage.objects FOR UPDATE TO authenticated
USING (
  bucket_id = 'avatars'
  AND (storage.foldername(name))[1] = auth.uid()::text
)
WITH CHECK (
  bucket_id = 'avatars'
  AND (storage.foldername(name))[1] = auth.uid()::text
);

CREATE POLICY "Avatar images are publicly readable"
ON storage.objects FOR SELECT TO public
USING (bucket_id = 'avatars');

3. 점검 체크리스트

항목설명
버킷명avatars
공개 정책Public bucket은 사용하지 않는 한 비활성 권장
업로드 경로avatars/{user_id}/avatar.jpg 형태 권장
핵심 실수INSERT/UPDATE 정책이 없으면 new row violates row-level security policy 오류 발생

4. 프론트 사용 예시

  • 파일 경로 예시: avatars/{user_id}/avatar.jpg
  • 업로드 후 공개 URL 생성: storage.from('avatars').getPublicUrl(path)
  • 사용자 메타(avatar_url) 저장: auth.updateUser({ data: { avatar_url } })